Database Transactions এবং SaveChanges মেথড

Microsoft Technologies - এন্টিটি ফ্রেমওয়র্ক (Entity Framework) Concurrency Handling এবং Transactions |
204
204

Database Transactions এবং SaveChanges মেথড হল Entity Framework (EF) এর গুরুত্বপূর্ণ ফিচার যা ডেটাবেসে একাধিক অপারেশন সম্পন্ন করার সময় ডেটার একনিষ্ঠতা এবং নিরাপত্তা নিশ্চিত করতে সহায়তা করে। যখন আপনি EF এর মাধ্যমে ডেটাবেসে পরিবর্তন করেন, তখন তা একটি ট্রানজেকশন হিসেবে বিবেচিত হয়, যার ফলে একাধিক পরিবর্তন একসাথে সফলভাবে সম্পন্ন হয় অথবা সবগুলো পরিবর্তন ব্যর্থ হলে ডেটাবেসের কোন পরিবর্তনই হয় না।


SaveChanges মেথড

SaveChanges মেথড EF Context এর মাধ্যমে আপনার মডেল (Entity) এর পরিবর্তনগুলো ডেটাবেসে সেভ করে। এই মেথডটি মূলত সব পরিবর্তন যেমন ইনসার্ট, আপডেট এবং ডিলিট একসাথে ডেটাবেসে প্রেরণ করে।

SaveChanges এর কাজ:

  • যখন আপনি EF তে কোনো Entity এর মান পরিবর্তন করেন (যেমন, নতুন রেকর্ড যোগ করা বা বিদ্যমান রেকর্ড আপডেট করা), তখন EF Context সেই পরিবর্তনগুলি ট্র্যাক করে রাখে।
  • SaveChanges কল করার পর, EF ওই পরিবর্তনগুলি ডেটাবেসে প্রপাগেট করে (অর্থাৎ, ডেটাবেসে সেভ করে)।
using (var context = new SchoolContext())
{
    var student = context.Students.First();
    student.Name = "John Doe";
    
    // SaveChanges মেথড দিয়ে পরিবর্তন সেভ করা
    context.SaveChanges();
}

এখানে, SaveChanges মেথডে সমস্ত পরিবর্তন ডেটাবেসে সেভ হয়ে যাবে।


Database Transactions

Database Transactions ব্যবহার করলে, আপনি একাধিক ডেটাবেস অপারেশন একসাথে গ্রুপ করতে পারেন, এবং একটিই ত্রুটি হলে পুরো অপারেশনটি রোলব্যাক (rollback) করা হয়। এতে করে ডেটাবেসের ডেটার একনিষ্ঠতা নিশ্চিত করা যায়। EF Context তে ট্রানজেকশন ব্যবস্থাপনা খুব সহজ এবং স্বচ্ছ।

ট্রানজেকশন ব্যবহার করার উদাহরণ:

using (var context = new SchoolContext())
{
    // ট্রানজেকশন শুরু
    using (var transaction = context.Database.BeginTransaction())
    {
        try
        {
            var student1 = new Student { Name = "Jane Doe", Age = 21 };
            var student2 = new Student { Name = "Sam Smith", Age = 22 };

            // প্রথম ইনসার্ট অপারেশন
            context.Students.Add(student1);
            context.SaveChanges();

            // দ্বিতীয় ইনসার্ট অপারেশন
            context.Students.Add(student2);
            context.SaveChanges();

            // যদি সবকিছু ঠিকঠাক থাকে, তাহলে কমিট
            transaction.Commit();
        }
        catch (Exception)
        {
            // কোনো ত্রুটি হলে, রোলব্যাক
            transaction.Rollback();
            throw;
        }
    }
}

এখানে:

  • BeginTransaction: এটি ট্রানজেকশন শুরু করে।
  • Commit: সমস্ত অপারেশন সফল হলে, পরিবর্তনগুলি ডেটাবেসে সেভ হয়ে যাবে।
  • Rollback: যদি কোনো ত্রুটি ঘটে, তবে সমস্ত অপারেশন বাতিল হয়ে যাবে এবং ডেটাবেস আগের অবস্থায় ফিরে যাবে।

Asynchronous SaveChanges

EF Core তে আপনি SaveChangesAsync মেথড ব্যবহার করে অ্যাসিঙ্ক্রোনাসভাবে ডেটাবেসে পরিবর্তন সেভ করতে পারেন। এটি দীর্ঘসময় ধরে চলা অপারেশনগুলির জন্য খুব কার্যকরী।

using (var context = new SchoolContext())
{
    var student = new Student { Name = "Alice", Age = 23 };
    context.Students.Add(student);
    
    // Asynchronousভাবে SaveChanges কল করা
    await context.SaveChangesAsync();
}

এখানে SaveChangesAsync মেথডটি অ্যাসিঙ্ক্রোনাসভাবে ডেটাবেসে পরিবর্তন সেভ করে, যা UI থ্রেডে কোনো বিলম্ব সৃষ্টি না করে, অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করে।


ট্রানজেকশন এবং SaveChanges একসাথে ব্যবহার করা

এখন, আপনি যদি ট্রানজেকশন এবং SaveChanges একসাথে ব্যবহার করতে চান, তবে আপনি দুটি অপারেশন একত্রিত করতে পারেন, যাতে একাধিক SaveChanges অপারেশন একযোগে কার্যকরী হয় এবং পুরো ট্রানজেকশনটি একসাথে সেভ হয় বা ব্যর্থ হলে রোলব্যাক হয়।

using (var context = new SchoolContext())
{
    using (var transaction = context.Database.BeginTransaction())
    {
        try
        {
            var student1 = new Student { Name = "Anna", Age = 24 };
            var student2 = new Student { Name = "Peter", Age = 26 };

            context.Students.Add(student1);
            context.SaveChanges();  // প্রথম SaveChanges

            context.Students.Add(student2);
            context.SaveChanges();  // দ্বিতীয় SaveChanges

            // কমিট যদি সবকিছু ঠিক থাকে
            transaction.Commit();
        }
        catch (Exception)
        {
            // কোনো ত্রুটি হলে, রোলব্যাক
            transaction.Rollback();
            throw;
        }
    }
}

এখানে:

  • দুটি SaveChanges অপারেশন ট্রানজেকশনের মধ্যে কল করা হয়েছে।
  • যদি কোনো একটিতে সমস্যা হয়, তাহলে Rollback ব্যবহার করে সবকিছু পূর্বাবস্থায় ফিরিয়ে আনা হবে।

সারাংশ

  • SaveChanges মেথড EF Context এ ট্র্যাক করা সমস্ত পরিবর্তন সেভ করে ডেটাবেসে।
  • Database Transactions একাধিক ডেটাবেস অপারেশন একসাথে চালানোর সুযোগ দেয় এবং সফল হলে সেগুলো ডেটাবেসে সেভ করে, অন্যথায় পুরো অপারেশন রোলব্যাক করে।
  • Async SaveChanges পারফরম্যান্স উন্নত করতে অ্যাসিঙ্ক্রোনাসভাবে কাজ করে।
  • এই দুটি ফিচার একসাথে ব্যবহৃত হলে ডেটাবেসের একনিষ্ঠতা এবং সুরক্ষা নিশ্চিত করা যায়, এবং কোনো অপারেশন ব্যর্থ হলে পূর্বাবস্থায় ফিরে আসা সম্ভব।
common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion